home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir39 / disaster.zip / DISASTER.EXE / LEESMIJ.DOC < prev    next >
Text File  |  1991-10-01  |  28KB  |  613 lines

  1.  
  2.  
  3.  
  4.                         _______
  5.                    ____|__     |               (R)
  6.                 --|       |    |-------------------
  7.                   |   ____|__  |  Association of
  8.                   |  |       |_|  Shareware
  9.                   |__|   o   |    Professionals
  10.                 -----|   |   |---------------------
  11.                      |___|___|    MEMBER
  12.  
  13.  
  14.  
  15.  
  16.  
  17.            
  18.                Het programma  dat hieronder  wordt beschreven  is gemaakt
  19.           door 
  20.                Feico Nater Shareware, 
  21.                Beukweg 24, 
  22.                7556 DE Hengelo.
  23.  
  24.            
  25.                Dit  programma  wordt beschikbaar  gesteld  als shareware.
  26.           Wat  is shareware?   Het  is software  dat  door de  gebruikers
  27.           gecopieerd en uitgedeeld mag worden, maar ik, de  auteur behoud
  28.           het  auteursrecht.  Misschien  heeft u  het programma  voor een
  29.           laag  bedrag  `gekocht'  van  een  bulletin-board  en  er  voor
  30.           betaald, maar ik  krijg daar geen cent van.   Ik verwacht dat u
  31.           mij rechtstreeks betaalt,  want ik verdien mijn levensonderhoud
  32.           met het maken van shareware.
  33.                Dus,  als dit  programma  u bevalt  en  u besluit  het  te
  34.           gebruiken, dan wordt  van u  verwacht dat u  een bedrag van  40
  35.           gulden (inclusief  BTW)  overmaakt  op  mijn  rekening  bij  de
  36.           Postbank, nummer  96541.   Helaas  kan  ik geen  kredietkaarten
  37.           accepteren.
  38.                Waarom  zou u  registreren?  Het  kost u  natuurlijk geld.
  39.           Maar ik  zal u op de  hoogte houden van  verdere ontwikkelingen
  40.           en u krijgt het recht om nieuwere versies te bestellen voor  de
  41.           prijs van porto  en floppy.   Tenslotte zal  ik bereid zijn  om
  42.           naar uw verlangens te luisteren.
  43.                En  als het  programma  u  niet bevalt?    Dan kan  u  het
  44.           weggooien.   Maar  ongetwijfeld zal  het idee  van shareware  u
  45.           bevallen, omdat  u niet  veel geld hoeft  te betalen voor  iets
  46.           dat achteraf toch tegenvalt.
  47.                Maar  of u  nu registreert of  niet, u  wordt aangemoedigd
  48.           dit systeem  verder rond te delen.  Geef  copieën aan uw vrien-
  49.           den.   De copieën die u  ronddeelt moeten volledig  en ongewij-
  50.           zigd zijn,  maar gebruik van file-compressie  is toegestaan.  U
  51.           mag alleen een  maximum van tien gulden vragen voor  de floppy,
  52.           verpakking en verzending.
  53.  
  54.            
  55.            Over de auteur
  56.  
  57.                Ik werk met computers sedert 1970.   Ik heb een HBO-studie
  58.           in informatica voltooid.   Daarna heb ik vele jaren  gewerkt in
  59.           de defensie-industrie,  en mijn collega's  beschouwden mij  als
  60.           de bekwaamste  programmeur onder hen.  Maar dank zij Gorbatsjov
  61.           (wat  ik hem niet  kwalijk kan nemen) ging  het slechter met de
  62.           defensie-industrie.  Sindsdien werk ik als shareware-auteur.
  63.  
  64.  
  65.  
  66.  
  67.           *******************************
  68.           *       D I S A S T E R       *
  69.           *******************************
  70.  
  71.             Disaster is een interactieve disassembler voor de IBM-PC.
  72.  
  73.             Een disassembler  is niets bijzonders.   Het  programma DEBUG
  74.           wordt  bij MSDOS  geleverd  en bevat  een  disassembler.   Maar
  75.           DEBUG kent  alleen de instructies van de  8086 en 8088.  Verder
  76.           levert DEBUG  geen coding  die geschikt  is om  weer als  input
  77.           voor een assembler te dienen.
  78.  
  79.             Geen enkele  disassembler maakt met één  druk op de  knop een
  80.           keurig  assemblerprogramma.   In tegendeel,  het disassembleren
  81.           van een beetje programma is vele dagen werk.
  82.  
  83.             De   eenvoudigst   denkbare  disassembler   werkt   rechttoe-
  84.           rechtaan.   Hij  leest het  machinetaalprogramma  van voor  tot
  85.           achter en vertaalt alles  naar assembler-taal, ongeacht of  het
  86.           code of data is.
  87.            
  88.             Disaster  werkt interactief.   U kan het machinetaalprogramma
  89.           op uw  gemak bekijken, labels en commentaar toevoegen, aangeven
  90.           wat code en wat  data is.  Het resultaat kan  worden opgeborgen
  91.           om de  volgende dag  verder te  kunnen gaan.   Tenslotte  maakt
  92.           DISASTER een correct assemblerprogramma.
  93.  
  94.             Deze gebruiksaanwijzing  is heel kort.   Er is niet  meer uit
  95.           te leggen.  Kennis van de PC  en de assembleertaal wordt echter
  96.           bekend verondersteld.
  97.  
  98.             DEMONSTRATIE
  99.  
  100.  
  101.             U start DISASTER de eerste keer met het commando:
  102.                     DISASTER
  103.             Er komt nu een foutmelding  die u mag negeren.  Op het scherm
  104.           verschijnt  de prompt  -->  om aan  te  geven dat  DISASTER  uw
  105.           commando's verwacht.
  106.  
  107.             Vervolgens leest u een programma in met het commando:
  108.                     R naam.EXE          
  109.           of:
  110.                     R naam.COM
  111.           of:
  112.                     R naam.SYS
  113.  
  114.             Wil u iets disassembleren  wat reeds  in het geheugen  staat,
  115.           dan is het commando:
  116.                     R segmentadres.ROM
  117.  
  118.             Nu moet u eerst aangeven dat uw programma als  instructiecode
  119.           moet worden gedisassembleerd met het commando:
  120.                     C Lstartlocation,I
  121.  
  122.             Nu begint het disassembleren!  Geef het commando 
  123.                     U Lstartlocation
  124.           wat resulteert  in een stukje gedisassembleerd programma op het
  125.           scherm.      Links  verschijnen   de  adressen,   daarnaast  de
  126.           mnemonische code,  en  rechts  (in  kleur)  de  oorspronkelijke
  127.           machinetaal.  Een  groen blokje  betekent dat  er geen  geldige
  128.           opcode werd  gevonden.  Voorvoegsels komen in geel, modrm-bytes
  129.           en sib-bytes in rood, overige bytes in groen.
  130.  
  131.             Varianten op het U-commando zijn:
  132.                     U adres          disassembleer 20 regels vanaf adres
  133.                     U adres,adres    disassembleer van .. tot ..
  134.                     U                disassembleer volgende 20 regels
  135.                     <return>         idem
  136.  
  137.             Adressen in commando's worden  altijd hexadecimaal opgegeven.
  138.           In plaats van adressen kan u ook labels (zie hierna) opgeven.
  139.  
  140.             LABELS
  141.  
  142.  
  143.             Alle adressen komen hexadecimaal  op het scherm.   Natuurlijk
  144.           wil u labels zien.  Dat kan met het commando:
  145.                     L adres,label
  146.  
  147.             Een label  moet, zoals gebruikelijk, met een letter beginnen.
  148.           Verder  moet minstens een keer  de letter G tot en  met Z er in
  149.           voorkomen.    De maximale  lengte  van  een label  is  veertien
  150.           tekens. 
  151.  
  152.             Komt in een label  geen van de letters  G tot en met  Z voor,
  153.           dan beschouwt DISASTER het als een hexadecimaal adres.
  154.  
  155.             Wees  voorzichtig  met  het  gebruik van  labels  die  met de
  156.           letter  L  beginnen.    De  functie  die  automatisch  controls
  157.           genereert   veronderstelt   namelijk   dat   zo'n   label   bij
  158.           instructiecode staat.
  159.  
  160.             Labels kunnen worden gebruikt in commando's.  Het U  commando
  161.           wordt dan bijvoorbeeld: U label,label.  
  162.  
  163.             Labels kunnen worden verwijderd met het commando:
  164.                     L label,-
  165.           of, wat op het zelfde neerkomt:
  166.                     L adres,-
  167.  
  168.             Labels kunnen van naam worden veranderd met het commando:
  169.                     L oude naam,nieuwe naam
  170.  
  171.             Het  is niet  mogelijk twee  labels op  het  zelfde adres  te
  172.           definiëren.
  173.  
  174.             Het maximale aantal labels is 4090.
  175.  
  176.             CONTROLs
  177.  
  178.  
  179.             Niet alles  wat u  ziet is instructiecode.   Er is  ook data.
  180.           De  disassembler kan echter het verschil  niet zien.  Bovendien
  181.           bestaat  er code en data in soorten.   U moet zelf aangeven wat
  182.           code  en wat  data is  en welke  soort het  is.  Dat  gaat door
  183.           controls te zetten met het commando:
  184.                     C adres,letter(s)
  185.           of, wat op het zelfde neerkomt:
  186.                     C label,letter(s)
  187.  
  188.             Een control kan worden verwijderd met:
  189.                     C adres,-
  190.           of:
  191.                     C label,-
  192.  
  193.             Vanaf  het aangegeven adres wordt gedisassembleerd volgens de
  194.           letter.
  195.  
  196.             Die letter kan zijn:
  197.                     B hexadecimale bytes
  198.                     T tekst tussen quotes, voor zover mogelijk
  199.                     W hexadecimale woorden
  200.                     I instructiecode voor Intel chips
  201.                     IV instructiecode voor NEC V20 of V30
  202.                     IA  instructiecode voor 80386  in protected  mode met
  203.           een adreslengte van 32 bits.
  204.                     IO instructiecode  voor 80386 in  protected mode  met
  205.           een operandlengte van 32 bits.
  206.                     IAO combinatie van IA en IO.
  207.  
  208.             B, T en W zijn data-controls,  de overige zijn code-controls.
  209.           Dit is  een belangrijk onderscheid  voor de  verderop besproken
  210.           A- en B-commando's.  
  211.             De  controls  delen   uw  programma  in  stukken.    Er  zijn
  212.           datastukken en codestukken.
  213.  
  214.             Als DISASTER een opcode tegenkomt die geldig is op  NEC-chips
  215.           maar niet  op Intel-chips, of  andersom, dan  wordt die  gewoon
  216.           gedisassembleerd.   Of I of IV  werd opgegeven is dan  niet van
  217.           belang.  Maar er zijn  opcodes die bij NEC en Intel iets anders
  218.           betekenen.  In dat geval beslist I of IV.   Programma's waarbij
  219.           het  onderscheid tussen I  en IV  belangrijk is  zijn overigens
  220.           zeldzaam.
  221.  
  222.             IA  en IO  kunnen alleen worden  gebruikt bij programma's die
  223.           op de  80386 in  protected mode  draaien.   In real mode  geldt
  224.           immers  altijd  een default-adres-  en  -operand-lengte van  16
  225.           bits.
  226.  
  227.             Het maximale aantal controls is 16380.
  228.  
  229.             INITIEEL OPGEVOERDE LABELS EN CONTROLS
  230.  
  231.             Leest u  een file  in, dan worden  automatisch wat labels  en
  232.           controls  bij de velden van de  header gezet.  De meeste labels
  233.           beginnen  met de letter  Z.   Er is ook  een label  met de naam
  234.           LSTARTLOCATION, en dat is de plaats waar de executie begint. 
  235.             In het  grootste deel  van uw programma  geldt een T-control.
  236.           Dat  mag vreemd  lijken,  maar het  is  gedaan omdat  nog  niet
  237.           bekend is waar de overige controls moeten staan. 
  238.  
  239.             AUTOMATISCH GENEREREN VAN LABELS
  240.  
  241.             Het  handmatig plaatsen  van  de labels  en  controls is  een
  242.           enorm  karwei.   Daarom is  dit  werk in  DISASTER gedeeltelijk
  243.           geautomatiseerd.
  244.  
  245.             Labels worden automatisch gegenereerd met het commando:
  246.                     A adres,adres
  247.  
  248.             DISASTER  doorzoekt nu  uw programma,  en geeft  tegelijk een
  249.           listing  op   het  scherm.     Alleen  de   codestukken  worden
  250.           onderzocht,  datastukken worden  overgeslagen.   Elke keer  als
  251.           DISASTER  een  adresverwijzing  tegenkomt  wordt  hiervoor  een
  252.           label opgevoerd.
  253.             Zo'n opgevoerd label heeft de vorm: L45A3_27E5.
  254.             De eerste  letter van  het opgevoerde  label geeft  het soort
  255.           verwijzing aan:
  256.                     L spronginstructie
  257.                     W woorddata
  258.                     T bytedata
  259.  
  260.             Na die  eerste letter komt  het hexadecimale  adres waar  het
  261.           label naar  verwijst,  want  het kind  moet  een  naam  hebben.
  262.           Daarna  een onderstreping,  en  ten slotte  het  adres waar  de
  263.           verwijzing  voor  het eerst  werd  aangetroffen.   Dat  laatste
  264.           vergemakkelijkt het onderzoek van het programma. 
  265.  
  266.             Elke keer  als een label  wordt opgevoerd toont DISASTER  een
  267.           blokje op  het  scherm.   Zo'n  blokje komt  dus  te staan  bij
  268.           iedere     JMP-    en    CALL-instructie    en    bij    iedere
  269.           geheugenverwijzing waar nog geen label aanwezig is.
  270.  
  271.             AUTOMATISCH GENEREREN VAN CONTROLS
  272.  
  273.             Controls worden automatisch gegenereerd met het commando
  274.                     B adres,adres
  275.  
  276.             DISASTER doorzoekt nu de labels van uw  programma.  Elke keer
  277.           als DISASTER in een  datastuk een label tegenkomt dat met een L
  278.           begint  wordt hier een  control I  opgevoerd, zodat  de verdere
  279.           programmatekst als  instructiecode wordt geïnterpreteerd.   Bij
  280.           de  eerstvolgende  onvoorwaardelijke  RET-   of  JMP-instructie
  281.           wordt een control opgevoerd  om de oorspronkelijke toestand  te
  282.           herstellen.
  283.  
  284.             Elke keer als een  control wordt opgevoerd toont DISASTER een
  285.           blokje op het scherm.  Zo'n blokje komt dus:
  286.             1  bij  een  label  dat  met  een  L  begint  en  dat in  een
  287.           datagebied stond.
  288.             2 bij de eerste RET- of JMP-instructie daarna.
  289.  
  290.             Elke keer als een control I wordt  opgevoerd, wordt bovendien
  291.           het  betreffende stuk  doorzocht  naar adresverwijzingen,  waar
  292.           dan  (zoals in het vorige  hoofdstuk stond)  labels voor worden
  293.           gegenereerd.
  294.  
  295.             AANWIJZINGEN
  296.  
  297.              Meestal begint een disassembly aldus:
  298.  
  299.             C:\disaster              Start DISASTER 
  300.             --->Rprogr.com           lees het programma
  301.             --->B100,ffff            genereer labels en controls
  302.             --->B100,ffff
  303.             --->B100,ffff
  304.             --->B100,ffff
  305.  
  306.             Op het scherm ziet u hoe steeds  meer labels worden geplaatst
  307.           en hoe steeds meer code-controls worden gezet.
  308.  
  309.             Het commando B100,ffff kan  eenvoudig worden herhaald met  de
  310.           F3-toets.   Herhaal het  tot DISASTER  meldt dat  er niet  meer
  311.           labels en controls zijn toegvoegd.
  312.  
  313.             Als het  een beetje  wil is de  disassembly hiermee al  haast
  314.           voltooid, en u hoeft er  niets voor te doen!  Kom daar  eens om
  315.           bij een andere disassembler.
  316.  
  317.             Kan er  dan  niets  foutgaan?   Helaas,  niets  is  volmaakt,
  318.           bijvoorbeeld in de volgende gevallen:
  319.           0150      JNZ L0123
  320.           0152      JZ  L0156
  321.           0154      ADD B[BX+SI],AL
  322.             Het B-commando denkt dat de laatste  instructie code is, want
  323.           er staat  geen onvoorwaardelijke sprongopdracht voor.  Maar JNZ
  324.           en JZ zijn samen onvoorwaardelijk.  De  coding vanaf adres 0154
  325.           zal dus  als  instructiecode  worden  beschouwd.    Komen  hier
  326.           dingen  voor die  lijken  op instrcties  met adresverwijzingen,
  327.           dan worden er valse labels gegenereerd.
  328.             Als u  oplet tijdens  de uitvoering  van het  B-commando, dan
  329.           zal u  dit onheil  wel opmerken.   Onderbreek het commando  met
  330.           een willekeurige  toets,  blader met  het  U-commando door  het
  331.           programma  om de juiste plek te vinden en zet op adres 0154 een
  332.           data-control.
  333.  
  334.                     INT 020
  335.             Dit is  het einde van het  programma, wat trouwens  ook geldt
  336.           voot  INT 021  met AH=00  of 04C.   Het B-commando  herkent dit
  337.           niet.  U moet zelf hierachter een data-control zetten.
  338.  
  339.                     JMP [08170+BX]
  340.             Dit  is een  sprong  via een  tabel  van sprongadressen.  Dit
  341.           wordt  door  DISASTER  niet  herkend.    U   moet  zelf  labels
  342.           toekennen  aan de adressen in de  tabel.  Gebruikt u labels die
  343.           met een L  beginnen, dan zal het B-commando de  gelabelde tekst
  344.           als code beschouwen. 
  345.  
  346.             COMMENTAAR
  347.  
  348.             U kan commentaar toevoegen met het commando:
  349.                     ;adres,tekst
  350.           en natuurlijk ook met
  351.                     ;label,tekst
  352.  
  353.             Let op de kommapunt die dit commando inluidt!
  354.  
  355.             Commentaar kan worden verwijderd met:
  356.                     ;adres,-
  357.           of:
  358.                     ;label,-
  359.  
  360.             De maximale lengte van een commentaarregel is 127 bytes.
  361.  
  362.             Er kunnen geen twee commentaarregels op een adres staan.
  363.  
  364.             De maximale  hoeveelheid commentaar is ongeveer  62500 bytes,
  365.           plus wat overhead.
  366.  
  367.             Verder zal  u, natuurlijk, de  gegenereerde labels  vervangen
  368.           door namen die duidelijk aangeven wat er gebeurt.
  369.  
  370.             MAKEN VAN EEN SOURCE-FILE
  371.  
  372.  
  373.             Het  uiteindelijke  doel van  disassembleren  is  dat er  een
  374.           source-file ontstaat.  Deze  source-file kan met een  assembler
  375.           weer geassembleerd  worden.  De  source-file wordt  geopend met
  376.           het commando
  377.                     W
  378.             De source-file  heeft de zelfde naam  als de .SYS-,  .EXE- of
  379.           .COM-file, doch met de extensie .8.
  380.  
  381.             Zolang de  source-file open is is  de prompt >>>.   Alleen de
  382.           commando's U en Q zijn nu toegestaan.
  383.  
  384.             Na  het commando W geeft u een  of meer U-commando's.  Op het
  385.           scherm   komen   nu   alleen   nog   maar   de   adressen,   de
  386.           gedisassembleerde tekst gaat naar de file.  
  387.  
  388.             Tenslotte sluit u de file met het commando
  389.                     Q
  390.           Nu verschijnt weer de prompt -->.
  391.  
  392.             Wellicht verwacht  u  dat  u, door  de  source-file  weer  te
  393.           assembleren,  weer de  zelfde .COM-  of .EXE-file  terugkrijgt.
  394.           In  de praktijk  zal dat  tegenvallen, omdat  meerdere machine-
  395.           instructies de zelfde functie hebben.  Bijvoorbeeld:
  396.             MOV AX,BX                8BC3 of 89D8
  397.             REP MOVSB                F3A4 of F2A4
  398.             ADD BX,5                 83C305 of 81C30500
  399.             JMP $+8                  EB06 of E90500
  400.  
  401.             Verder  zijn er  instructies denkbaar  die voor  de processor
  402.           niet  uitvoerbaar   zijn,  zoals  SHL  AL,30  of  BOUND  AX,BX.
  403.           DISASTER  accepteert zulke  instructies,  de  assembler zal  ze
  404.           misschien weigeren.
  405.  
  406.             HULP
  407.  
  408.             Hulpschermen zijn beschikbaar  met de  toetsen F5 tot  en met
  409.           F10.    F1  en  F3  zijn  dus  vrij  om  commando's  geheel  of
  410.           gedeeltelijk te herhalen.  
  411.             Een hulpscherm wordt met een willekeurige toets verwijderd.
  412.             Druk  liever niet op de  hulptoetsen terwijl DISASTER met een
  413.           opdracht bezig  is, het heeft enigszins vreemde (geen ernstige)
  414.           gevolgen.
  415.  
  416.             STOPPEN EN VERDERGAAN
  417.  
  418.  
  419.             U heeft na vele uren werk uw  programma uitgebreid met Labels
  420.           en Controls.  Om de volgende dag verder te  kunnen gaan geeft u
  421.           het commando:
  422.                     S
  423.             Er wordt nu een  zogenaamde scriptfile  gemaakt.  Deze  heeft
  424.           de extensie  .SCR en,  als u geen  andere naam opgaf,  dezelfde
  425.           naam als uw programma.
  426.  
  427.             Bestaat   de   scriptfile  al,   dan   vraagt   DISASTER   om
  428.           bevestiging.
  429.  
  430.             Tenslotte stopt u met het commando:
  431.                     Q
  432.             Is er nog geen scriptfile gemaakt,  dan  vraagt  DISASTER  om
  433.           bevestiging.
  434.  
  435.             Om verder te gaan start u de disassembler met het commando
  436.                     DISASTER filenaam
  437.           waarbij  u  de  naam  van  de  scriptfile  opgeeft.    DISASTER
  438.           onderzoekt   namelijk  eerst  of   de  opgegeven  filenaam  een
  439.           scriptfile is.   Is dat niet het geval,  dan zoekt DISASTER een
  440.           .COM- of .EXE-file.
  441.  
  442.             Een scriptfile is een  ASCII-file en bevat gewone  commando's
  443.           voor de disassembler.   Niets verbiedt u de scriptfile  met een
  444.           teksteditor te bewerken.
  445.  
  446.           OVERZICHT VAN DE 80386-CODE
  447.  
  448.           D: richting.   Als dit  bit 1 is, dan  is het  datatransport in
  449.           omgekeerde richting
  450.           W: woord.   Als dit bit  1 is, dan is  de data 16 (of  32) bits
  451.           (anders 8).
  452.           S: sign-extend.  Als dit  bit 1 is, dan is de brondata  8 bits,
  453.           waarvan het hoogste bit gepropageerd wordt.
  454.           M: mod/rm-byte
  455.           I: immediate data
  456.  
  457.           hexadecimaal
  458.                     binair           mnemonisch
  459.           00 M      0000 00dw        ADD memory,register
  460.           04 I      0000 010w        ADD register,immediate
  461.           06        0000 0110        PUSH ES
  462.           07        0000 0111        POP ES
  463.           08 M      0000 00dw        OR  memory,register
  464.           0C I      0000 010w        OR  register,immediate
  465.           0E        0000 0110        PUSH CS
  466.           0F        0000 0111        Zie verderop
  467.           10 M      0000 00dw        ADC memory,register
  468.           14 I      0000 010w        ADC register,immediate
  469.           16        0000 0110        PUSH SS
  470.           17        0000 0111        POP SS
  471.           18 M      0000 00dw        SBB memory,register
  472.           1C I      0000 010w        SBB register,immediate
  473.           1E        0000 0110        PUSH DS
  474.           1F        0000 0111        POP DS
  475.           20 M      0000 00dw        AND memory,register
  476.           24 I      0000 010w        AND register,immediate
  477.           26        0000 0110        ES: prefix
  478.           27        0000 0111        DAA
  479.           28 M      0000 00dw        SUB memory,register
  480.           2C I      0000 010w        SUB register,immediate
  481.           2E        0000 0110        CS: prefix
  482.           2F        0000 0111        DAS
  483.           30 M      0000 00dw        XOR memory,register
  484.           34 I      0000 010w        XOR register,immediate
  485.           36        0000 0110        SS: prefix
  486.           37        0000 0111        AAA
  487.           38 M      0000 00dw        CMP memory,register
  488.           3C I      0000 010w        CMP register,immediate
  489.           3E        0000 0110        DS: prefix
  490.           3F        0000 0111        AAS
  491.  
  492.           40        0100 0rrr        INC wordregister
  493.           48        0100 1rrr        DEC wordregister
  494.           50        0101 drrr        PUSH, POP wordregister
  495.           60        0110 000d        PUSHA, POPA
  496.           62 M      0110 0010        BOUND wordregister,memory
  497.           63 M      0110 0011        ARPL memory,wordregister
  498.           64        0110 0100        80386 FS: prefix, NEC REPNC
  499.           65        0110 0101        80386 GS: prefix, NEC REPC
  500.           66        0110 0110        80386 OS prefix
  501.           67        0110 0111        80386 AS prefix
  502.           68 I      0110 10s0        PUSH immediate
  503.           69 M I    0110 10s1        IMUL register,memory,immediate
  504.           6C        0110 11dw        INS, OUTS
  505.           70 I      0111 cccc        J voorwaardelijk
  506.  
  507.           80 M/0    1000 00sw        ADD memory,immediate
  508.           80 M/1    1000 00sw        OR  memory,immediate
  509.           80 M/2    1000 00sw        ADC memory,immediate
  510.           80 M/3    1000 00sw        SBB memory,immediate
  511.           80 M/4    1000 00sw        AND memory,immediate
  512.           80 M/5    1000 00sw        SUB memory,immediate
  513.           80 M/6    1000 00sw        XOR memory,immediate
  514.           80 M/7    1000 00sw        CMP memory,immediate
  515.           82        1000 0010        niet gedefinieerd
  516.           84 M      1000 010w        TEST memory,register
  517.           86 M      1000 011w        XCHG memory,register
  518.           88 M      1000 10dw        MOV memory,register
  519.           8C M      1000 11d0        MOV memory,segmentregister
  520.           8D M      1000 1101        LEA wordregister,memory
  521.           8F M/0    1000 1111        POP memory
  522.           90        1001 0rrr        XCHG AX,wordregister
  523.           98        1001 100w        CBW, CWD
  524.           9A I      1001 1010        CALL intersegment
  525.           9B        1001 1011        WAIT
  526.           9C        1001 110d        PUSHF, POPF
  527.           9E        1001 111d        SAHF, LAHF
  528.           A0 M      1010 00dw        MOV register,memory
  529.           A4        1010 010w        MOVS
  530.           A6        1010 011w        CMPS
  531.           A8 I      1010 100w        TEST       AL,immediate,        TEST
  532.           AX,immediate
  533.           AA        1010 101w        STOS 
  534.           AC        1010 110w        LODS
  535.           AE        1010 111w        SCAS
  536.           B0 I      1011 wrrr        MOV register,immediate
  537.           C0 M/0 I  1100 000w        ROL memory,immediate
  538.           C0 M/1 I  1100 000w        ROR memory,immediate
  539.           C0 M/2 I  1100 000w        RCL memory,immediate
  540.           C0 M/3 I  1100 000w        RCR memory,immediate
  541.           C0 M/4 I  1100 000w        SHL memory,immediate
  542.           C0 M/5 I  1100 000w        SHR memory,immediate
  543.           C0 M/6 I  1100 000w        niet gedefinieerd
  544.           C0 M/7 I  1100 000w        SAR memory,immediate
  545.           C2 I      1100 0010        RET immediate
  546.           C3        1100 0011        RET
  547.           C4 M      1100 0100        LES wordregister,memory
  548.           C5 M      1100 0101        LDS wordregister,memory
  549.           C6 M/0 I  1100 011w        MOV memory,immediate
  550.           C6 M/1 e.v                 Niet gedefinieerd
  551.           C8 I I    1100 1000        ENTER word,byte
  552.           C9        1100 1001        LEAVE
  553.           CA I      1100 1010        RETF word
  554.           CB        1100 1011        RETF
  555.           CC        1100 1100        INT 3
  556.           CD I      1100 1101        INT byte
  557.           CE        1100 1110        INTO
  558.           CF        1100 1111        IRET
  559.           D0 M/0    1101 000w        ROL memory,1
  560.           D0 M/1    1101 000w        ROR memory,1
  561.           D0 M/2    1101 000w        RCL memory,1
  562.           D0 M/3    1101 000w        RCR memory,1
  563.           D0 M/4    1101 000w        SHL memory,1
  564.           D0 M/5    1101 000w        SHR memory,1
  565.           D0 M/6    1101 000w        niet gedefinieerd
  566.           D0 M/7    1101 000w        SAR memory,CL
  567.  
  568.           D2 M/0    1101 001w        ROL memory,CL
  569.           D2 M/1    1101 001w        ROR memory,CL
  570.           D2 M/2    1101 001w        RCL memory,CL
  571.           D2 M/3    1101 001w        RCR memory,CL
  572.           D2 M/4    1101 001w        SHL memory,CL
  573.           D2 M/5    1101 001w        SHR memory,CL
  574.           D2 M/6    1101 001w        niet gedefinieerd
  575.           D2 M/7    1101 001w        SAR memory,CL
  576.           D4 I      1101 0100        AAM 
  577.           D5 I      1101 0101        AAD
  578.           D6        1101 0110        ongedefinieerd
  579.           D7        1101 0111        XLAT
  580.           D8 M/0    1101 1000        FADD dword
  581.           D8 M/1    1101 1000        FMUL dword
  582.           D8 M/2    1101 1000        FCOM dword
  583.           D8 M/3    1101 1000        FCOMP dword
  584.           D8 M/4    1101 1000        FSUB dword
  585.           D8 M/5    1101 1000        FSUBR dword
  586.           D8 M/6    1101 1000        FDIV dword
  587.           D8 M/7    1101 1000        FDIVR dword
  588.           D8 C0     1101 1000        FADD 0,i
  589.           D8 C8     1101 1000        FMUL 0,i
  590.           D8 D0     1101 1000        FCOM 0,i
  591.           D8 D8     1101 1000        FCOMP 0,i
  592.           D8 E0     1101 1000        FSUB 0,i
  593.           D8 E8     1101 1000        FSUBR 0,i
  594.           D8 F0     1101 1000        FDIV 0,i
  595.           D8 F8     1101 1000        FDIVR 0,i
  596.  
  597.           D9 M/0    1101 1001        FLD dword
  598.           D9 M/1    1101 1001        niet gedefinieerd
  599.           D9 M/2    1101 1001        FST dword
  600.           D9 M/3    1101 1001        FSTP dword
  601.           D9 M/4    1101 1001        FLDENV dword
  602.           D9 M/5    1101 1001        FLDCW dword
  603.           D9 M/6    1101 1001        FSTENV dword
  604.           D9 M/7    1101 1001        FSTCW dword
  605.           D9 C0     1101 1001        FLD i
  606.           D9 C8     1101 1001        FXCH 0,i
  607.           D9 D0     1101 1001        FNOP
  608.           D9 D1 e.v.                 1101 1001 niet gedefinieerd
  609.           D9 E0     1101 1001        FCHS
  610.           D9 E1     1101 1001        FABS
  611.           enz.
  612.           D9 FF     1101 1001        FCOS
  613.